package com.sz.classload;

import java.lang.reflect.Constructor;
import java.util.Arrays;

/**
 * 类加载三种方式
 *  java FDD
 *      直接导入,引用类
 *  Class.forName
 *      forName 默认初始化
 *              有可选参数 是否初始化
 *
 *  ClassLoader.loadClass
 *
 *
 *  可以避免重复加载，父类已经加载了，子类就不需要再次加载更加安全，
 *  很好的解决了各个类加载器的基础类的统一问题，如果不使用该种方式，
 *  那么用户可以随意定义类加载器来加载核心 api，会带来相关隐患。
 */
public class FDDTest {
    public static void main(String[] args) throws ClassNotFoundException {

        Class.forName("com.sz.classload.FDD",false,Thread.currentThread().getContextClassLoader());
//        System.out.println("FDDTest.main ------------");
//        Class.forName("com.sz.classload.FDD");
//        System.out.println("FDDTest.main ------------");

//        Thread.currentThread().getContextClassLoader().loadClass("com.sz.classload.FDD");
//        System.out.println("FDDTest.main ------------");

        try {
            System.out.println("ClassLoader开始执行：");
            ClassLoader.getSystemClassLoader().loadClass("com.sz.classload.FDD");
            System.out.println("Class.forName开始执行：");
            //hjc是包名
            Class.forName("com.sz.classload.FDD",false,Thread.currentThread().getContextClassLoader());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
